package code13;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;

import org.junit.Test;

public class Homework01 {
	@Test
	public void t1() {
		/*
		 * 提示用户输入正整数，并存入 ArrayList 集合，如果用户输入 0 则表示输入结束。
		 * 使用 for、iterator 循环遍历集合 并 同时删除 所有 3 的倍数的元素。
		 * 使用 foreach 循环集合，并去除 所有 2 的倍数的元素。
		 */
		Scanner sc = new Scanner(System.in);
		List<Integer> list = new ArrayList<Integer>();
//		while(true) {
//			int num = sc.nextInt();
//			if (0 == num) {
//				break;
//			}
//			if (num < 0) {
//				System.out.println("请输入正整数");
//				continue;
//			}
//			list.add(num);
//		}
		list.addAll(Arrays.asList(1,2,3,4,5,6,7,8,9,12,14,15,17,18,9,18,3));
		System.out.println("old:" + list);
		// 1.for
		for (int i = list.size() - 1; i >= 0; i--) {
			if( 0 == list.get(i)%3 ) {
				list.remove(i);// 是 3 的倍数, 移除 该位置上的该元素
			}
		}
		System.out.println("for-remove - 3 :" + list);
		
		// 2.iterator
		Iterator<Integer> it = list.iterator();
		while(it.hasNext()) {
			if(0 == it.next()%3){
				//it.remove();// 是 3 的倍数, 移除
			}
		}
		System.out.println("iterator-remove - 3 :" + list);
		
		// 3.foreach, 不能同时 添加或移除元素
//		for (Integer num : list) {
//			if ( 0 == num % 2 ) {
//				list.remove(num); // 2 的倍数
//			}
//		}
		// 临时存储
		List<Integer> newList = new ArrayList<Integer>();
		for (Integer num : list) {
			if ( 0 != num % 2 ) {
				newList.add(num);// 非 2 的倍数
			}
		}
//		list.clear();
//		list.addAll(newList);
		
		list = new ArrayList<Integer>(newList);
		
		System.out.println("foreach-remove - 2:" + list);
	}
	
}
